//
//  BBInputController.h
//  BBTouch
//
//  Created by ben smith on 5/28/08.
//  This file is part of BBTouch.
//
//  BBTouch is free software: you can redistribute it and/or modify
//  it under the terms of the GNU Lesser General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.

//  BBTouch is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU Lesser General Public License for more details.

//  You should have received a copy of the GNU Lesser General Public License
//  along with BBTouch.  If not, see <http://www.gnu.org/licenses/>.
// 
//  Copyright 2008 Ben Britten Smith ben@benbritten.com .
//

#import <Cocoa/Cocoa.h>

// handles the sequence grabber callbacks
// also responsible for the initial SG setup

@class BBBlobDetector;
@class BBRawBlobView;
@class BBImagePreProcessor;
@class BBAverageImage;
@class CSGCamera;
@class CSGImage;

@interface BBInputController : NSObject {
	BOOL detectBlobs;
	BOOL backgroundSnapFlag;
	BOOL backgroundInProgress;
	BOOL freezeFrame;
	NSImage * freezeFrameImage;
	
	BBBlobDetector * blobDetector;
	CSGCamera *camera;
	int bgCountDown;
	BBAverageImage * averageImage;
	BBRawBlobView * rawBlobView;
}

@property (retain) BBRawBlobView * rawBlobView;
@property (retain) NSImage * freezeFrameImage;


+ (BBInputController*)sharedInputController;
- (BOOL)freezeFrame;
- (IBAction)backgroundSnap:(id)sender;
- (IBAction)showCameraSettings:(id)sender;
- (void) dealloc;
- (void)appBegin:(id)n;
- (void)awakeFromNib;
- (void)blobDetectionNotification:(id)sender;
- (void)camera:(CSGCamera *)aCamera didReceiveFrame:(CSGImage *)aFrame;;
- (void)freezeFrameNotification:(id)note;
- (void)initialBGSnap:(NSTimer*)theTimer;
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context;
- (void)resetFilterSettings;
- (void)setFreezeFrame:(BOOL)b;

// 14 methods





@end
